/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package SFI.acceso;

import factura.modelo.ClavePrimaria;
import facturacion.negocio.ManejadorDBRemote;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

/**
 *
 * @author Romig Sevilla
 * @version 1.0
 */
public class Delegado {

    private static Delegado instance = null;

    private Delegado() {
    }

    public static Delegado getInstance() {
        if (instance == null) {
            instance = new Delegado();
        }
        return instance;
    }

    private ManejadorDBRemote lookupManejadorDBRemote() {
        try {
            Context c = new InitialContext();
            return (ManejadorDBRemote) c.lookup("java:global/EAFacturacion-ejb/ManejadorDB");
        } catch (NamingException ne) {
            System.out.println("error obteniendo referencia ejb "+ne);
            throw new RuntimeException(ne);
        }
    }

    public <T extends ClavePrimaria> int insert(T entidad) {
        return this.lookupManejadorDBRemote().insert(entidad);
    }

    public <T extends ClavePrimaria> List<T> buscarTodos(Class<T> objeto, String columna, boolean estatus, boolean ascendente) {
        return this.lookupManejadorDBRemote().buscarTodos(objeto, columna, estatus, ascendente);

    }

    public <T extends ClavePrimaria> int modificar(T entidad) {

        return this.lookupManejadorDBRemote().modificar(entidad);
    }

    public <T extends ClavePrimaria> T buscar(Class<T> entidad, Integer id) {

        return this.lookupManejadorDBRemote().buscar(entidad, id);
    }

    public Long obtenerSecuenId() {
        return this.lookupManejadorDBRemote().obtenerSecuenId();
    }
}
